package leetcode.leetcode1636;

import java.util.Arrays;

/**
 * @author czt
 * @version 1.0
 * @since 2025/1/9
 * 按出现频率排序 数据范围在[-100,100]
 */
public class Leetcode1636 {

    public int[] frequencySort(int[] nums) {
        // 1.统计出现频率
        int[] count = new int[201];
        for (int num : nums) {
            count[num + 100]++;
        }
        // 2.比较器，按频率升序、再按数值降序
        return Arrays.stream(nums).boxed().sorted((a,b)->{
            int af = count[a + 100];
            int bf = count[b + 100];
            if (af < bf) {
                return -1;
            } else if (af > bf) {
                return 1;
            } else {
                return b - a;
            }

        }).mapToInt(Integer::intValue).toArray();
    }
}
